# 类重写了__iter__和__next__就是迭代器
# 函数实现了yield就是生成器(生成器就是特殊的迭代器)

# 列表推导式
# li = [i for i in range(10)]
# print(li) # 返回的是一个列表
# 生成器--(元组推导式)
# ge = (i for i in range(10))
# print(ge) # 生成器对象
# # print(tuple(ge))
# for i in ge:  # 也能进行循环遍历
#     print(i)

# 1-10
def getNumber(num):
    i = 0
    while i<num:
        i+=1
        yield i  # 定义比迭代器简单 中断
        # return i  # return后面的代码不执行了
ge = getNumber(10)
print(ge) # 生成器对象
# for i in ge:
#     print(i)

# 不管是生成器还是迭代器都是事先迭代的一种方式

